import wordcloud
from imageio.v3 import imread

def getText():
    txt = open("text/hamlet.txt", "r", encoding="utf-8").read()
    txt = txt.lower()
    for ch in '!"#$%()*+,-./:;<=>?@[\\]^_‘{|}~':
        txt = txt.replace(ch, " ")
    return txt


hamletTxt = getText()
words = hamletTxt.split()
counts = {}
for word in words:
    counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(10):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))
wordscloud = wordcloud.WordCloud(max_font_size=180, min_font_size=5, max_words=100, font_step=10, width=1000, height=700,
                                 background_color="white", mask=imread("mark/photo1.png"))
wordscloud.generate(hamletTxt)
wordscloud.to_file("cloud_to_hamlet.png")
